﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using BadgeManager.Model;

namespace BadgeManager.Controller
{
    public class ctrlAccessiErrati
    {
        private Connector Connessione;

        public enum Inserimento
        {
            Successo,
            NoInserimento,
            Errore
        }

        public enum Cancellazione
        {
            Successo,
            NoElementi,
            Errore
        }

        public ctrlAccessiErrati()
        {
            this.Connessione = Connector.Istance();
        }

        public Inserimento Nuovo(AccessoErrato AccessoErrato)
        {
            string sql = @"insert into AccessiErrati
                values(@id,@nomeutente,@password,@data,@ora)";

            SqlCommand cmd = new SqlCommand(sql, Connessione.Connessione);
            cmd.Parameters.Add("@id", (Guid)AccessoErrato.Id);
            cmd.Parameters.Add("@nomeutente", AccessoErrato.NomeUtente);
            cmd.Parameters.Add("@password", AccessoErrato.Password);
            cmd.Parameters.Add("@data", AccessoErrato.Data);
            cmd.Parameters.Add("@ora", AccessoErrato.Ora);

            if (cmd.ExecuteNonQuery() > 0)
                return Inserimento.Successo;
            else
                return Inserimento.Errore;
        }

        public Cancellazione Cancella(AccessoErrato AccessoErrato)
        {
            string sql = @"delete from AccessiErrati
                where id=@condizione";

            SqlCommand cmd = new SqlCommand(sql, Connessione.Connessione);
            cmd.Parameters.Add("@id", (Guid)AccessoErrato.Id);
            cmd.Parameters.Add("@nomeutente", AccessoErrato.NomeUtente);
            cmd.Parameters.Add("@password", AccessoErrato.Password);
            cmd.Parameters.Add("@data", AccessoErrato.Data);
            cmd.Parameters.Add("@ora", AccessoErrato.Ora);

            if (cmd.ExecuteNonQuery() > 0)
                return Cancellazione.Successo;
            else
                return Cancellazione.Errore;
        }

        public List<AccessoErrato> Ricerca(string condizione = "1=1")
        {
            string sql = "select id AS Id,nomeutente AS NomeUtente,password AS Password,data AS Data,ora AS Ora"
                + " from AccessiErrati ";
            sql += " where " + condizione;

            DataTable dt = new DataTable();
            SqlDataAdapter com = new SqlDataAdapter(sql, Connessione.Connessione);
            com.Fill(dt);

            List<AccessoErrato> AccessiErrati = new List<AccessoErrato>();
            foreach (DataRow item in dt.Rows)
            {
                AccessoErrato AccessoErrato = new AccessoErrato();
                AccessoErrato.Id = (Guid)item["Id"];
                AccessoErrato.NomeUtente = item["NomeUtente"].ToString();
                AccessoErrato.Password = item["Password"].ToString();
                AccessoErrato.Data = (DateTime)item["Data"];
                AccessoErrato.Ora = (TimeSpan)item["Ora"];
                AccessiErrati.Add(AccessoErrato);
            }
            return AccessiErrati;
        }
    }
}